User-driven navigation in a map navigation tool

ABSTRACT

A map navigation tool presents directions using a map navigation user interface that simplifies navigation in various ways. In particular, a user-driven navigation model simplifies user interaction with the map navigation tool. For example, the map navigation tool identifies an upcoming list item among multiple list items of a list of directions for a route. The map navigation tool receives a user input event. For example, the user input event represents a tap on a touchscreen of the computing device, voice input to a microphone of the computing device, or button or keystroke input to the computing device. Responsive to the user input event, the map navigation tool outputs an indication of the upcoming list item.

BACKGROUND

Computer-aided map navigation tools have achieved widespread acceptance.A user can find an address or directions with map navigation toolsavailable at various Web sites. Some software programs allow a user tonavigate over a map, zooming in towards the ground or zooming out awayfrom the ground, or moving between different geographical positions. Incars, GPS devices have provided rudimentary road navigation for years.More recently, map navigation software for cellular telephones and othermobile computing devices has allowed users to zoom in, zoom out, andmove around a map that shows details about geographical features, town,city, county and state locations, roads, and buildings.

With a turn-by-turn navigation system, a list of directions for a routeis organized as multiple items corresponding to steps along the route.The multiple items are typically presented in order to a user as theuser travels along the route. In some systems, the user can scrollthrough the list of directions to see locations along the routeassociated with different items, or select one of the multiple items tosee the location that is associated with the item. Usually, the currentlocation of the user is shown, and the user can be alerted of anupcoming instruction so long as the appropriate item in the list ofdirections is selected as the user approaches. While such systems workwell in some scenarios, in other scenarios the presentation ofdirections can be overly complicated or difficult to controlinteractively.

SUMMARY

Innovations are described herein for presenting directions with a mapnavigation tool. These innovations simplify navigation in various ways.For example, a user-driven navigation model simplifies user interactionwith the map navigation tool.

According to one aspect of the innovations described herein, a computingdevice implements a map navigation tool, and the map navigation toolidentifies an upcoming list item among multiple list items of a list ofdirections for a route. The identification of the upcoming list item canbe based at least in part on current location of the computing device.The map navigation tool receives a user input event. For example, theuser input event represents a tap on a touchscreen of the computingdevice, voice input to a microphone of the computing device, or buttonor keystroke input to the computing device. Responsive to the user inputevent, the map navigation tool outputs an indication of the upcominglist item. For example, the output includes rendering for display a viewof at least part of the list of directions and/or rendering for audioplayback voice output for text description of the upcoming list item.

In some cases, for each of one or more subsequent user input events, themap navigation tool receives that subsequent user input event and,responsive to the subsequent user input event, outputs the indication ofthe upcoming list item, thereby repeating the output of the indicationof the upcoming list item.

In other cases, based at least in part on a change to current locationof the computing device, the map navigation tool changes the upcominglist item. When the map navigation tool then receives a subsequent userinput event, the map navigation tool outputs an indication of thechanged upcoming list item, thereby advancing in the order through themultiple list items. The map navigation tool can delay outputting theindication of the changed upcoming list item until receipt of asubsequent user input event.

When the map navigation tool renders for display a view of at least partof the list of directions, the map navigation tool can emphasize theupcoming list item in the view compared to other list items. Forexample, the upcoming list item is emphasized in the view by rendering agraphical icon and/or text for the upcoming list item in an accent colordifferent than a default color used to render other list items. Or, asanother example, the upcoming list item is emphasized in the view byaligning text for the upcoming list item at the top of a list controlportion of the view.

When the map navigation tool renders for display a view of at least partof the list of direction, the map navigation tool can change that firstview in response to a subsequent user input event. For example, the mapnavigation tool receives a subsequent user input event such as a flickgesture or pan gesture on a touchscreen of the computing device and,responsive to the subsequent user input event, renders for display asecond view that is scrolled relative to the first view. The mapnavigation tool can identify a future list item among the multiple listitems, then show the future list item in the second view by rendering agraphical icon and/or text for the future list item with a default colordifferent than an accent color used to render a graphical icon and/ortext for the upcoming list item. Or, the map navigation tool canidentify a previous list item among the multiple list items, thende-emphasize the previous list item in the second view by rendering agraphical icon and/or text for the previous list item with lowerintensity than the default color and the accent color.

The map navigation tool can also change the orientation of the view of amap depending on whether a current list item is the upcoming list item.For example, the map navigation tool checks whether the current listitem is the upcoming list item. If the current list item is the upcominglist item, the map navigation tool sets the orientation of a view of amap so that heading toward an end location of the route is upward in theview of the map. Otherwise, if the current list item is not the upcominglist item, the map navigation tool sets the orientation of the view ofthe map so that north is upward in the view of the map.

These and other examples of innovative features are detailed below. Thevarious innovative features described herein can be used in combinationor separately. The foregoing and other objects, features, and advantagesof the invention will become more apparent from the following detaileddescription, which proceeds with reference to the accompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an example mobile computingdevice in conjunction with which innovations described herein may beimplemented.

FIG. 2 is a block diagram illustrating an example software architecturefor a map navigation tool that renders map views and list views.

FIGS. 3 a and 3 b are diagrams illustrating features of a generalizedmap view and generalized list view rendered using a map navigation tool.

FIGS. 4 a-4 c are diagrams illustrating example user interface featuresof list views rendered using a map navigation tool.

FIGS. 5 a-5 c are diagrams illustrating portions of example list viewsin a map navigation tool.

FIGS. 6 a and 6 b are flowcharts illustrating generalized techniques foruser-driven navigation in a map navigation tool.

FIG. 7 is a flowchart illustrating a generalized technique for renderinglist items with different color schemes in a map navigation tool.

FIG. 8 is a flowchart illustrating a generalized technique for renderinglist views in a map navigation tool depending on status of the listitems.

FIGS. 9 a and 9 b are diagrams illustrating changes to a list viewdepending on status of the list items.

FIG. 10 is a flowchart illustrating a generalized technique forrendering a graphical icon that indicates direction toward an endlocation of a route.

FIGS. 11 a-11 d are diagrams illustrating destination icons thatindicate direction toward an end location of a route.

DETAILED DESCRIPTION

Innovations are described herein for presenting directions with a mapnavigation tool. The various innovations described herein can be used incombination or separately.

Example Mobile Computing Device

FIG. 1 depicts a detailed example of a mobile computing device (100)capable of implementing the innovations described herein. The mobiledevice (100) includes a variety of optional hardware and softwarecomponents, shown generally at (102). In general, a component (102) inthe mobile device can communicate with any other component of thedevice, although not all connections are shown, for ease ofillustration. The mobile device can be any of a variety of computingdevices (e.g., cell phone, smartphone, handheld computer, laptopcomputer, notebook computer, tablet device, netbook, media player,Personal Digital Assistant (PDA), camera, video camera, etc.) and canallow wireless two-way communications with one or more mobilecommunications networks (104), such as a Wi-Fi, cellular, or satellitenetwork.

The illustrated mobile device (100) includes a controller or processor(110) (e.g., signal processor, microprocessor, ASIC, or other controland processing logic circuitry) for performing such tasks as signalcoding, data processing, input/output processing, power control, and/orother functions. An operating system (112) controls the allocation andusage of the components (102) and support for one or more applicationprograms (114) such as a map navigation tool that implements one or moreof the innovative features described herein. In addition to mapnavigation software, the application programs can include common mobilecomputing applications (e.g., telephony applications, emailapplications, calendars, contact managers, web browsers, messagingapplications), or any other computing application.

The illustrated mobile device (100) includes memory (120). Memory (120)can include non-removable memory (122) and/or removable memory (124).The non-removable memory (122) can include RAM, ROM, flash memory, ahard disk, or other well-known memory storage technologies. Theremovable memory (124) can include flash memory or a Subscriber IdentityModule (SIM) card, which is well known in Global System for MobileCommunications (GSM) communication systems, or other well-known memorystorage technologies, such as “smart cards.” The memory (120) can beused for storing data and/or code for running the operating system (112)and the applications (114). Example data can include web pages, text,images, sound files, video data, or other data sets to be sent to and/orreceived from one or more network servers or other devices via one ormore wired or wireless networks. The memory (120) can be used to store asubscriber identifier, such as an International Mobile SubscriberIdentity (IMSI), and an equipment identifier, such as an InternationalMobile Equipment Identifier (IMEI). Such identifiers can be transmittedto a network server to identify users and equipment.

The mobile device (100) can support one or more input devices (130),such as a touch screen (132) (e.g., capable of capturing finger tapinputs, finger gesture inputs, or keystroke inputs for a virtualkeyboard or keypad), microphone (134) (e.g., capable of capturing voiceinput), camera (136) (e.g., capable of capturing still pictures and/orvideo images), physical keyboard (138), buttons and/or trackball (140)and one or more output devices (150), such as a speaker (152) and adisplay (154). Other possible output devices (not shown) can includepiezoelectric or other haptic output devices. Some devices can servemore than one input/output function. For example, touchscreen (132) anddisplay (154) can be combined in a single input/output device.

The mobile device (100) can provide one or more natural user interfaces(NUIs). For example, the operating system (112) or applications (114)can comprise speech-recognition software as part of a voice userinterface that allows a user to operate the device (100) via voicecommands. For example, a user's voice commands can be used to provideinput to a map navigation tool.

A wireless modem (160) can be coupled to one or more antennas (notshown) and can support two-way communications between the processor(110) and external devices, as is well understood in the art. The modem(160) is shown generically and can include, for example, a cellularmodem for communicating at long range with the mobile communicationnetwork (104), a Bluetooth-compatible modem (164), or a Wi-Fi-compatiblemodem (162) for communicating at short range with an externalBluetooth-equipped device or a local wireless data network or router.The wireless modem (160) is typically configured for communication withone or more cellular networks, such as a GSM network for data and voicecommunications within a single cellular network, between cellularnetworks, or between the mobile device and a public switched telephonenetwork (PSTN).

The mobile device can further include at least one input/output port(180), a power supply (182), a satellite navigation system receiver(184), such as a Global Positioning System (GPS) receiver, sensors (186)such as an accelerometer, a gyroscope, or an infrared proximity sensorfor detecting the orientation and motion of device (100), and forreceiving gesture commands as input, a transceiver (188) (for wirelesslytransmitting analog or digital signals) and/or a physical connector(190), which can be a USB port, IEEE 1394 (FireWire) port, and/or RS-232port. The illustrated components (102) are not required orall-inclusive, as any of the components shown can be deleted and othercomponents can be added.

The mobile device can determine location data that indicates thelocation of the mobile device based upon information received throughthe satellite navigation system receiver (184) (e.g., GPS receiver).Alternatively, the mobile device can determine location data thatindicates location of the mobile device in another way. For example, thelocation of the mobile device can be determined by triangulation betweencell towers of a cellular network. Or, the location of the mobile devicecan be determined based upon the known locations of Wi-Fi routers in thevicinity of the mobile device. The location data can be updated everysecond or on some other basis, depending on implementation and/or usersettings. Regardless of the source of location data, the mobile devicecan provide the location data to map navigation tool for use in mapnavigation. For example, the map navigation tool periodically requests,or polls for, current location data through an interface exposed by theoperating system (112) (which in turn may get updated location data fromanother component of the mobile device), or the operating system (112)pushes updated location data through a callback mechanism to anyapplication (such as the map navigation tool) that has registered forsuch updates.

With the map navigation tool and/or other software or hardwarecomponents, the mobile device (100) implements the technologiesdescribed herein. For example, the processor (110) can update a map viewand/or list view in reaction to user input and/or changes to the currentlocation of the mobile device. As a client computing device, the mobiledevice (100) can send requests to a server computing device, and receivemap images, distances, directions, other map data, search results orother data in return from the server computing device.

The mobile device (100) can be part of an implementation environment inwhich various types of services (e.g., computing services) are providedby a computing “cloud.” For example, the cloud can comprise a collectionof computing devices, which may be located centrally or distributed,that provide cloud-based services to various types of users and devicesconnected via a network such as the Internet. Some tasks (e.g.,processing user input and presenting a user interface) can be performedon local computing devices (e.g., connected devices) while other tasks(e.g., storage of data to be used in subsequent processing) can beperformed in the cloud.

Although FIG. 1 illustrates a mobile device (100), more generally, theinnovations described herein can be implemented with devices havingother screen capabilities and device form factors, such as a desktopcomputer, a television screen, or device connected to a television(e.g., a set-top box or gaming console). Services can be provided by thecloud through service providers or through other providers of onlineservices. Thus, the map navigation innovations described herein can beimplemented with any of the connected devices as a client computingdevice. Similarly, any of various computing devices in the cloud or aservice provider can perform the role of server computing device anddeliver map data or other data to the connected devices.

Example Software Architecture for Rendering of Map Data and Directions

FIG. 2 shows an example software architecture (200) for a map navigationtool (210) that renders views of a map depending on user input andlocation data. A client computing device (e.g., smart phone or othermobile computing device) can execute software organized according to thearchitecture (200) to render map views, list views of directions for aroute, or other views.

The architecture (200) includes a device operating system (OS) (250) andmap navigation tool (210). In FIG. 2, the device OS (250) includescomponents for rendering (e.g., rendering visual output to a display,generating voice output for a speaker), components for networking,components for location tracking, and components for speech recognition.The device OS (250) manages user input functions, output functions,storage access functions, network communication functions, and otherfunctions for the device. The device OS (250) provides access to suchfunctions to the map navigation tool (210).

A user can generate user input that affects map navigation. The userinput can be tactile input such as touchscreen input, button presses orkey presses or voice input. The device OS (250) includes functionalityfor recognizing taps, finger gestures, etc. to a touchscreen fromtactile input, recognizing commands from voice input, button input orkey press input, and creating messages that can be used by mapnavigation tool (210) or other software. The interpretation engine (214)of the map navigation tool (210) listens for user input event messagesfrom the device OS (250). The UI event messages can indicate a panninggesture, flicking gesture, dragging gesture, or other gesture on atouchscreen of the device, a tap on the touchscreen, keystroke input, orother UI event (e.g., from voice input, directional buttons, trackballinput). If appropriate, the interpretation engine (214) can translatethe UI event messages from the OS (250) into map navigation messagessent to a navigation engine (216) of the map navigation tool (210).

The navigation engine (216) considers a current view position (possiblyprovided as a saved or last view position from the map settings store(211)), any messages from the interpretation engine (214) that indicatea desired change in view position, map data and location data. From thisinformation, the navigation engine (216) determines a view position andprovides the view position as well as location data and map data in thevicinity of the view position to the rendering engine (218). Thelocation data can indicate a current location (of the computing devicewith the map navigation tool (210)) that aligns with the view position,or the view position can be offset from the current location.

The navigation engine (216) gets current location data for the computingdevice from the operating system (250), which gets the current locationdata from a local component of the computing device. For example, thelocation data can be determined based upon data from a globalpositioning system (GPS), by triangulation between towers of a cellularnetwork, by reference to physical locations of Wi-Fi routers in thevicinity, or by another mechanism.

The navigation engine (216) gets map data for a map from a map datastore (212). In general, the map data can be photographic image data orgraphical data (for boundaries, roads, etc.) at various levels ofdetail, ranging from high-level depiction of states and cites, tomedium-level depiction of neighborhoods and highways, to low-leveldepiction of streets and buildings. Aside from photographic data andgraphical data, the map data can include graphical indicators such asicons or text labels for place names of states, cities, neighborhoods,streets, buildings, landmarks or other features in the map. Aside fromnames, the map data can include distances between features, route points(in terms of latitude and longitude) that define a route between startand end locations, text directions for decisions at waypoints along theroute (e.g., turn at NE 148^(th)), and distances between waypoints alongthe route. The map data can provide additional details for a givenfeature such as contact information (e.g., phone number, Web page,address), reviews, ratings, other commentary, menus, photos, advertisingpromotions, or information for games (e.g., geo-caching, geo-tagging).Links can be provided for Web pages, to launch a Web browser andnavigate to information about the feature.

The organization of the map data depends on implementation. For example,in some implementations, different types of map data (photographic imagedata or graphical surface layer data, text labels, icons, etc.) arecombined into a single layer of map data at a given level of detail. Upto a certain point, if the user zooms in (or zooms out), a tile of themap data at the given level of detail is simply stretched (or shrunk).If the user further zooms in (or zooms out), the tile of map data at thegiven level of detail is replaced with one or more other tiles at ahigher (or lower) level of detail. In other implementations, differenttypes of map data are organized in different overlays that arecomposited during rendering, but zooming in and out are generallyhandled in the same way, with overlapping layers stretched (or shrunk)to some degree, and then replaced with tiles at other layers.

The map data store (212) caches recently used map data. As needed, themap data store (212) gets additional or updated map data from local filestorage or from network resources. The device OS (250) mediates accessto the storage and network resources. The map data store (212) requestsmap data from storage or a network resource through the device OS (250),which processes the request, as necessary requests map data from aserver and receives a reply, and provides the requested map data to themap data store (212).

For example, to determine directions for a route, the map navigationtool (210) provides a start location (typically, the current location ofthe computing device with the map navigation tool (210)) and an endlocation for a destination (e.g., an address or other specific location)as part of a request for map data to the OS (250). The device OS (250)conveys the request to one or more servers, which provide surface layerdata, route points that define a route, text directions for decisions atwaypoints along the route, distances between waypoints along the route,and/or other map data in reply. The device OS (250) in turn conveys themap data to the map navigation tool (210).

As another example, as a user travels along a route, the map navigationtool (210) gets additional map data from the map data store (212) forrendering. The map data store (212) may cache detailed map data for thevicinity of the current location, using such cached data toincrementally change the rendered views. The map navigation tool (210)can pre-fetch map data along the route, or part of the route. Thus, asthe rendered map views are updated to account for changes to the currentlocation, the map navigation tool (210) often updates the displaywithout the delay of requesting/receiving new map data from a server. Asneeded, the map data store (212) requests additional map data to renderviews.

The rendering engine (218) processes the view position, location dataand map data, and renders a view of the map. Depending on the usescenario, the rendering engine (218) can render map data from localstorage, map data from a network server, or a combination of map datafrom local storage and map data from a network server. In general, therendering engine (218) provides output commands for the rendered view tothe device OS (250) for output on a display. The rendering engine (218)can also provide output commands to the device OS (250) for voice outputover a speaker or headphones.

The exact operations performed as part of the rendering depend onimplementation. In some implementations, for map rendering, the tooldetermines a field of view and identifies features of the map that arein the field of view. Then, for those features, the tool selects mapdata elements. This may include any and all of the map data elements forthe identified features that are potentially visible in the field ofview. Or, it may include a subset of those potentially visible map dataelements which are relevant to the navigation scenario (e.g.,directions, traffic). For a given route, the rendering engine (218)graphically connects route points along the route (e.g., with ahighlighted color) to show the route and graphically indicates waypointsalong the route. The tool composites the selected map data elements thatare visible (e.g., not obscured by another feature or label) from theview position. Alternatively, the tool implements the rendering usingacts in a different order, using additional acts, or using differentacts.

In terms of overall behavior, the map navigation tool can react tochanges in the location of the computing device and can also react touser input that indicates a change in view position, a change in the topitem in a list of directions for a route, or other change. For example,in response to a finger gesture or button input that indicates a panninginstruction on the map, or upon a change to a previous item or next itemin a list of directions for a route, the map navigation tool can updatethe map with a simple, smooth animation that translates (shiftsvertically and/or horizontally) the map. Similarly, as the location ofthe computing device changes, the map navigation tool can automaticallyupdate the map with a simple translation animation. (Or, the mapnavigation tool can automatically re-position and re-render an icon thatindicates the location of the computing device as the location isupdated.) If the change in location or view position is too large to berendered effectively using a simple, smooth translation animation, themap navigation tool can dynamically zoom out from at first geographicposition, shift vertically and/or horizontally to a second geographicposition, then zoom in at the second geographic position. Such a dynamiczoom operation can happen, for example, when a phone is powered off thenpowered on at a new location, when the view position is re-centered tothe current location of the device from far away, when the user quicklyscrolls through items in a list of directions for a route, or when theuser scrolls to a previous item or next item in the list of directionsthat is associated with a waypoint far from the current view position.The map navigation tool can also react to a change in the type of view(e.g., to switch from a map view to a list view, or vice versa) or achange in details to be rendered (e.g., to show or hide trafficdetails).

Alternatively, the map navigation tool (210) includes more or fewermodules. A given module can be split into multiple modules, or differentmodules can be combined into a single module. For example, thenavigation engine can be split into multiple modules that controldifferent aspects of navigation, or the navigation engine can becombined with the interpretation engine and/or the rendering engine.Functionality described with reference to one module (e.g., renderingfunctionality) can in some cases be implemented as part of anothermodule.

Example Map Navigation UI and Screenshots

FIGS. 3 a and 3 b illustrate a generalized map view (300) andgeneralized direction list view (350), respectively, rendered using amap navigation tool of a mobile computing device (301). FIGS. 4 a-4 care diagrams showing example screenshots (401, 402, 403) of a list viewof a map navigation UI.

The device (301) includes one or more device buttons. FIGS. 3 a and 3 bshow a single device button near the bottom of the device (301). Theeffect of actuating the device button depends on context. For example,actuation of the device button causes the device (301) to return to ahome screen or start screen from the map navigation tool. Alternatively,the device (301) includes no device buttons.

The device (301) of FIGS. 3 a and 3 b includes a touchscreen (302) witha display area and three touchscreen buttons. The effect of actuatingone of the touchscreen buttons depends on context and which button isactuated. For example, one of the touchscreen buttons is a searchbutton, and actuation of the search button causes the device (301) tostart a Web browser at a search page, start a search menu for contactsor start another search menu, depending on the point at which the searchbutton is actuated. Or, one of the touchscreen buttons is a “back”button that can be used to navigate the user interface of the device.Alternatively, the device includes more touchscreen buttons, fewertouchscreen buttons or no touchscreen buttons. The functionalityimplemented with a physical device button can be implemented insteadwith a touchscreen button, or vice versa.

In the display area of the touchscreen (302), the device (301) rendersviews. In FIG. 3 a, as part of the map view (300), the device (301)renders a full map (310) and status information (320) that overlays thetop of the full map (310). The status information (320) can includetime, date, network connection status and/or other information. Thedevice (301) also renders a control section (330) that includes mapnavigation buttons, which depend on implementation of the map navigationtool. FIG. 3 a shows a “directions” button (arrow icon), “re-center”button (crosshairs icon) and “search” button (magnifying glass icon).Actuation of the “directions” button causes the device (301) to open amenu for keystroke input for a destination location. Actuation of the“center” button causes the device (301) to align the view position overthe current location of the device (301). Actuation of the “search”button causes the device (301) to open a menu for keystroke input for asearch for a location or locations. Other buttons/controls can beaccessed by actuating the ellipses, such as buttons/controls to clearthe map of extra data, show/hide photographic image details, show/hidetraffic data, show/hide route directions, change settings of the mapnavigation tool such as whether voice instructions are input or whetherorientation of the view changes during progress along the route, etc.Alternatively, the device includes more map navigation buttons, fewermap navigation buttons or no map navigation buttons.

In FIG. 3 b, as part of the list view (350), the device (301) renders ashortened map (360), status information (320) that overlays the top ofthe shortened map (360), and a list control (370). The shortened map(360) shows map details as in the full map (310) but also showsgraphical details of at least part of a route between a start locationand end location. The list control (370) shows text details and iconsfor directions along the route. FIGS. 4 a-4 c show example screenshots(401, 402, 403) of list views, each including a shortened map (360) andlist control (370) as well as status information (320) (namely, time)that overlays the shortened map (360).

The screenshots (401, 402, 403) in FIGS. 4 a-4 c show different listviews for a route between a start location and end location. In thescreenshot (401) of FIG. 4 a, a graphical icon (421) shows the currentlocation along the route in the map portion of the list view. Part ofthe route (411) is shown in a highlighted color relative to the rest ofthe map data. The list control of the screenshot (401) includes waypointicons (431, 432) and text details for waypoints along the route. Itemsin the list of direction are organized as waypoints, which representpoints at which the user is given specific directions to turn, continuestraight, take an exit, etc. Below the waypoint icons (431, 432),direction icons (441, 442) graphically represent the active part of thedirections, e.g., to turn continue straight, take and exit associatedwith the respective waypoints. Distance values (451, 452) indicate thedistance between waypoints (as in the distance (452) between waypoints 2and 3) or distance between the current location and the upcomingwaypoint (as in the distance (451) to waypoint 2).

The color of the waypoint icons (431, 432), text details, directionicons (441, 442) and distance values (451, 452) can change depending onthe status of progress along the route. In FIG. 4 a, the waypoint icon(431), text and direction icon (441) for waypoint 2 are rendered in anaccent color to indicate waypoint 2 is the upcoming item in the list ofdirections. On the other hand, the waypoint icon (432), associated textand direction icon (442) for waypoint 3 are rendered in a neutral colorto indicate waypoint 3 is further in the future.

The screenshot (402) of FIG. 4 b shows the list view after the userscrolls to the end of the list of directions, which is graphicallyrepresented with text (462). Waypoint icons (433) represent a finalwaypoint in the map portion and list control of the list view. The mapportion highlights part (412) of the route graphically. In the listcontrol, the waypoint icon (433) is followed by text associated with thewaypoint and a direction icon (443), but not a distance value since thewaypoint is the final waypoint. The waypoint icon (433), associated textand direction icon (443) for the final, future waypoint are rendered ina neutral color.

The screenshot (403) of FIG. 4 c shows the list view after the userscrolls back to the start of the list of directions, which isgraphically represented with text (461). The map portion shows part(413) of the route graphically, but the completed part of the route isgrayed out. Waypoint icons (434) represent an initial waypoint in themap portion and list control of the list view, and are also grayed outto show that the initial waypoint has been passed. Another waypoint icon(435) represents a subsequent waypoint. In the list control, spacepermitting, the waypoint icons (434, 435) are followed by textassociated with the waypoints and direction icons (444), also grayedout, but not distance value since the waypoints have been passed. Thelist control also includes transit mode icons (472) that the user canactuate to switch between modes of transit (e.g., walking, car, bus).

Elements of List Control of Map Navigation UI

This section further describes example UI elements of a list control andexample operations that a map navigation tool performs when presentinglist views. In particular, FIGS. 5 a-5 c illustrate behaviors and UIelements of a list view of a map navigation UI. As in FIGS. 4 a-4 c, thelist view includes a list control below a map portion, and the user canview upcoming, previous and future list items by scrolling through thelist of directions. Depending on implementation, the map navigation toolcan use text, graphical icons for directions, audio, a plotted maproute, an icon for the current location, and/or waypoint icons to conveydirections to the user. FIGS. 4 a-4 c and 5 a-5 c show differentfeatures of list views, but are not related as a series for the samelist of directions.

The innovations described herein (including, but not limited to, theuser-driven navigation model, dynamic adjustment of graphics/text fordirections depending on current location, and use of a destination iconthat directs the user towards the destination of a route) can be usedwith a map navigation UI as described with reference to FIGS. 3 a, 3 b,4 a-4 c and 5 a-5 c, or they can be used with another map navigation UI.The map navigation tool can be any combination of software and/orhardware that implements a map navigation UI.

Obtaining List of Directions. In general, the map navigation toolobtains multiple list items of a list of directions for a route. Each ofthe multiple list items is associated with an action (e.g., depart,turn, go straight, arrive), location text and location (e.g., startlocation, end location, waypoint location). For example, the mapnavigation tool sends an end location of the route (such as adestination address) to a server. The map navigation tool receivesdirection information that includes descriptive text for the multiplelist items. The direction information can also include distanceinformation indicating distances between different locations for therespective list items along the route. The start location may berepresented as an initial list item in the list of directions, or as aseparate location. Similarly, the end location may be represented as afinal list item in the list of directions, or as a separate location.The map navigation tool assembles the list of directions from thereceived direction information. Alternatively, the map navigation toolobtains the multiple list items of the list of directions in some otherway.

Rendering Map Portion of List View. The map navigation tool renders fordisplay a view of a map. For a given list item, the map navigation tooltypically renders a waypoint icon at the location for the given listitem, if the location is visible. The user can use pan gestures to movethe map portion or zoom in/out with double tap, pinch, or spreadgestures.

Orientation of Map Portion. The map navigation tool can set theorientation of a view of the map depending on whether a current listitem is the upcoming list item. For example, the map navigation toolchecks whether a current list item is the upcoming list item. If thecurrent list item is the upcoming list item, the map navigation toolsets the orientation of the view of the map so that the heading to theend location of the route is upward in the view of the map. Otherwise(if the current list item is not the upcoming list item), the mapnavigation tool sets the orientation of the view of the map so thatnorth is upward in the view of the map. Once set, the heading does notchange even if the user changes the map portion with pan, double tap,pinch, or spread gestures. Alternatively, the orientation of the view ofthe map changes as the user navigates along the route.

Rendering List Control of List View. The map navigation tool alsorenders for display a view of at least part of the list of directions.For a given list item, the map navigation tool renders the waypoint iconfor the given list item, the location text for the given list item, anda direction icon for the action for the given list item. The mapnavigation tool can also render sub-text for the given list item, whichis typically de-emphasized compared to the location text for the givenlist item.

Main Text. As shown in FIGS. 5 a-5 c, main instruction text (571, 572,573, 574, 575) is condensed. The main text (e.g., for the street atwhich a turn should be made, for the exit ramp that should be followed,for the final address of the destination) is concise, relatively largerthan other text, and separated from text for other instructions. Thisde-clutters the list of instructions and makes the main instruction text“glanceable,” or easy to perceive quickly.

Instruction text is cropped as needed to fit in the list control. Theway instruction text is cropped can depend on whether the text is for aninitial list item or later list item. For example, the map navigationtool crops main text after the first seven lines (see text (571) in FIG.5 a) except for the initial list item, in which case main text iscropped after the first three lines (see text (572) in FIG. 5 b).

After a given list item, the next list item is displayed if spaceremains in the list control. In FIG. 5 a, the list control (501)includes icons (531, 541) and text (571) for a single list item. In FIG.5 c, the list control portion of the list view (503) includes icons(534, 535, 544, 545) and text (574, 575) for multiple list items. Thenext list item can be partially displayed, as in the list control (502)of FIG. 5 b, which partially shows an icon (533) and text (573) for thesecond list item. Instruction text for the initial list item of a listcan be cropped (e.g., after three lines) such that the initial view ofthe list control includes at least part of the second list item, whichprovides a prompt to the user that instructions for future list itemsare below the fold.

In some cases, the map navigation tool consolidates text that isduplicative. For example, a list item can include an exit name for anexit from a highway as well as a street name for a street onto which theuser should turn. If the exit name and street name are the same, the mapnavigation tool renders the name only once—showing the exit name anddetails, but omitting the street name to the extent it matches the exitname. More generally, the map navigation tool detects duplicate text andeliminates the duplicate text.

Sub-text. The list control (501) in FIG. 5 a and list control (502) inFIG. 5 b also include sub-text (581, 582), which indicates additionaldirections, commentary, hints about visual landmarks, or otherinformation. The sub-text (581, 582) begins on a line after the maintext (571, 572). In general, for an instruction aligned at the top ofthe list control portion of a list view, as shown in FIG. 5 a, the mapnavigation tool crops the sub-text to fit in the view. The sub-text(581) for the instruction does not spill over to the next screen. Forthe initial list item of a list, as shown in FIG. 5 b, the first line ofsub-text (582) can indicate the road towards which the user should turn,and the sub-text (582) is cropped after two lines to make room for (atleast part of) the next instruction.

Direction Icons. FIGS. 5 a-5 c show example direction icons (541, 542,544, 545). The map navigation tool uses relatively large, prominenticons to represent actions for directions. A given direction iconindicates the main action for a list item. For example, the mapnavigation tool uses a large left arrow or large right arrow instead ofthe text “left” or “right.” Direction icons can represent differentgradations of left turn, different gradations of right turn, a straightcourse, U turn, combination turns (e.g., right turn then quick leftturn), exit ramps, departure from the start location, arrival at the endlocation and/or other actions. The map navigation tool can receivedirection icons for a route as part of the direction information from aserver, or the map navigation tool can use default direction icons foractions. If a direction icon is not available, the map navigation toolcan use text for an action.

Waypoint Icons. FIGS. 5 a-5 c also show example waypoint icons (531,532, 533, 534, 535). A waypoint icon for a list item generally appearsabove, and has the same color as, the direction icon for that list item.A waypoint icon can be used for a waypoint location, the start locationor the end location. The waypoint icon also appears at an appropriatelocation in the map portion of the list view, as shown in FIG. 5 c.

Distance Values. Distance values (551, 552, 554, 555) are displayedunder corresponding direction icons in the FIGS. 5 a-5 c. For theupcoming list item (compared to the current location of the computingdevice), the distance value represents the distance value between thecurrent location and location for the upcoming list item. The distancevalue is updated so that it decreases as the user approaches thelocation for the upcoming list item. For a future list item, thedistance value indicates the distance between locations for that futurelist item and the immediately preceding list item, respectively. Forexample, in FIG. 5 c, 800 feet is the distance value (554) between thecurrent location and location for upcoming list item 2. The distancevalue (554) will decrease as the user approaches the location. Once thecurrent location crosses the location for list item 2, list item 3 isthe upcoming list item, and the distance value (555) of 1.2 miles willdecrease until the current location reaches the location for list item3. The update rate for the distance value can depend on the rate atwhich the current location is updated (e.g., once per second). Forexample, the map navigation tool updates the distance value when itperiodically polls the operating system for the current location.

Automatic Feedback. The map navigation tool can automatically (i.e.,without user prompting) provide feedback in various ways. After the usersuccessfully completes navigation for a list item, the map navigationtool can generate positive feedback (e.g., beep, ding or other tone)that the step was successfully performed. Or, if the user makes a wrongturn or otherwise deviates from the route, the map navigation tool cangenerate another noise, show an error screen and/or otherwise providenegative feedback. In general, the map navigation tool does notautomatically initiate remediation to get the user back on course, butthe map navigation tool can initiate such remediation (e.g., byre-calculating a new route) if the user prompts the map navigation toolto do so (e.g., by tapping the touchscreen of the computing device).

User-Driven Navigation

In conventional turn-by-turn navigation, a map navigation tool presentsa list of directions for a route. Instructions are presented in order asa user travels along the route. Typically, the map navigation tool showsthe current location of the computing device, and the user cannot lookbehind or ahead in the list of directions for the route. In addition, inmany scenarios, the presentation of directions is too complicated ordifficult to control. In particular, it can be difficult to control thelist of directions and find an upcoming instruction when driving.

According to a first set of innovations described herein, a mapnavigation tool presents an upcoming instruction responsive to userinput. For example, when a user taps a touchscreen of a computingdevice, provides a voice command such as “Next,” or otherwise interactswith the device, the map navigation tools renders the upcominginstruction with emphasis on the display and/or announces the upcominginstruction over a speaker. In this way, the user gets visual and/oraudio instructions from the map navigation tool when the user chooses toget such instructions. This user-driven navigation model simplifies userinteraction with a map navigation tool.

Such user-driven alerts can provide several other advantages. The usercan receive a particular instruction multiple times by repeatedlyproviding user input (tapping, etc.), which puts the user in control ofwhen the upcoming instruction is output. This may help the userunderstand an instruction that is tricky or complicated, or help if theuser misses the first alert for the instruction due to background noiseor some other distraction. Also, the user can cause the map navigationtool to output the upcoming instruction well ahead of an upcoming turn,exit ramp, etc. to give the user time to change lanes or otherwiseprepare to follow the instruction. In this way, the user can learnupcoming instructions by interacting with the computing device. On theother hand, if the user chooses not to provide additional user input, orif the user switches to another application, the map navigation tooldoes not continue to announce instructions along the route, which makesless noise for the user. Thus, if a driver knows a shortcut notreflected in the route, or seeks to avoid traffic on part of the route,the driver can take a different course without the map navigation tooldistracting the driver with out-dated announcements about the route.

FIGS. 6 a and 6 b show generalized techniques (601, 602) for user-drivennavigation in a map navigation tool. A computing device such as a mobilecomputing device can perform the technique (601) of FIG. 6 a ortechnique (602) of FIG. 6 b.

With reference to FIG. 6 a, to start, the map navigation tool identifies(610) an upcoming list item among multiple list items of a list ofdirections for a route. The list of directions includes the multiplelist items in order. Typically, the map navigation tool identifies theupcoming list item based at least in part of the current location of thecomputing device.

The map navigation tool checks (620) whether a user input event has beenreceived. For example, the user input event can represent a tap on atouchscreen of the computing device, voice input to a microphone of thecomputing device, button or keystroke input to the computing device, orsome other input to the computing device. In example implementations,the user input is a tap on a touchscreen, which provides a large touchtarget that simplifies interaction with the computing device whendriving. The user input event can be any form of message, interrupt,call or other communication within the computing device.

If the map navigation tool has received a user input event, responsiveto the user input event, the map navigation tool outputs (630) anindication of the upcoming list item. For example, the map navigationtool renders (for audio playback) voice output for text description ofthe upcoming list item and/or renders (for display) a view of at leastpart of the list of directions. In a view rendered for display, theupcoming list item can be emphasized in several ways compared to otherlist items of the multiple list items. The map navigation tool canrender a graphical icon and/or text for the upcoming list item in anaccent color different than a default color used to render other listitems of the multiple list items. The map navigation tool can also aligntext for the upcoming list item at the top of the list control portionof the list view, which provides the effect of “snapping” the icons,text, etc. for the upcoming list item to a prominent position on thedisplay. Alternatively, the map navigation tool outputs the indicationof the upcoming list item in some other way.

The map navigation tool checks (690) whether to continue navigation and,if so, repeats the loop of identifying (610) the upcoming list item andchecking (620) for user input events. With this model of interactivenavigation, the map navigation tool can repeat the indication of theupcoming list item if the upcoming list item has not changed. Forexample, for each of one or more subsequent user input events, the mapnavigation tool receives the subsequent user input event and, responsiveto the subsequent user input event, outputs the indication of theupcoming list item.

With this model of interactive navigation, as the upcoming list itemchanges, the map navigation tool can also advance in order through themultiple list items of the list of directions. For example, the mapnavigation tool changes the upcoming list item based at least in part ona change to current location of the computing device. Depending on thechange in current location, the map navigation tool can advance throughthe list of directions by one list item or by multiple list items. Then,when the map navigation tool receives a subsequent user input event,responsive to the subsequent user input event, the map navigation tooloutputs an indication of the changed upcoming list item. By delaying theoutput of the indication of the changed upcoming list item until receiptof a subsequent user input event, the map navigation tool can avoiddistracting the user with instructions the user already knows.

FIG. 6 b shows a variation (602) of the technique with different typesof user input events and corresponding output details. After identifying(610) the upcoming list item, the map navigation tool checks (621)whether a “tap” user input event has been received. For example, the tapuser event is a tap anywhere on a touchscreen of the computing device.If a tap user input event has been received, the map navigation toolrenders (631) for display a view in which the upcoming list item isemphasized and renders (632) for audio playback text description of theupcoming list item. The map navigation tool can similarly render displayand audio for the upcoming list item responsive to other user inputevents for user input such as a voice command, button input for aphysical button or button input for a touchscreen button.

As part of the same event handling loop, the map navigation tool checks(641) whether a “flick” user input event has been received. If the mapnavigation tool has received a flick user input event as a subsequentuser input event (after the upcoming list item has already been renderedfor display), responsive to the subsequent user input event, the mapnavigation tool renders (651) for display a view in which the list ofdirections is scrolled relative to the earlier view. In the scrolledlist of directions, when the map navigation tool identifies a futurelist item (following the upcoming list item in order), the mapnavigation tool can show the future list item by rendering a graphicalicon and/or text for the future list item with a default color differentthan the accent color used for the upcoming list item. When the mapnavigation tool identifies a previous list item (preceding the upcominglist item in order), the map navigation tool can de-emphasize theprevious list item by rendering a graphical icon and/or text for theprevious list item with lower intensity than the default color and theaccent color. The map navigation tool can similarly scroll through thelist of directions responsive to other user input events for user inputsuch as a “pan” gesture, button input for a physical button (e.g.,volume up/down control) or button input for a touchscreen button.

As in FIG. 6 a, the map navigation tool checks (690) whether to continuenavigation and, if so, repeats the loop of identifying (610) theupcoming list item and checking (621, 641) for user input events. Withthis model of interactive navigation, the map navigation tool can repeatan upcoming list item if the upcoming list item has not changed, advancein order through the multiple list items of the list of directions asupcoming list items, or review previous and/or future lists items.

For example, with reference to FIGS. 4 a-4 c and 5 a-5 c, theuser-driven navigation reacts to different types of user input (e.g.,tap, flick up gesture, flick down gesture, or pan gesture on atouchscreen) in different ways. FIGS. 4 a-4 c illustrate three differentstates of the list view: when the current list item is the upcoming listitem on the route (FIG. 4 a), when the current list item is a futurelist item on the route (FIG. 4 b), and when the current list item is aprevious list item on the route (FIG. 4 c).

The list view (401) in FIG. 4 a shows an upcoming list item (list item2) at the top of the list control. The map navigation tool renders thelist view (401) when the user taps on a touchscreen of the computingdevice. By providing a large tap target (e.g., anywhere on thetouchscreen), the map navigation tool makes it easier to reach the listview (401). Alternatively, certain parts of the touchscreen are excluded(e.g., mode change icons or some other sections).

In particular, responsive to the tap gesture, the map navigation tool“snaps” the waypoint icon (431), main text detail “Hwy 1 South,”direction icon (441), etc. for the upcoming list item to the top of thelist control portion of the list view. In the map portion of the listview (401), the map navigation tool updates the display to show thecurrent location icon (421) at the current location of the computingdevice. If close enough to the current location, the map navigation toolcan also show the waypoint icon (431) for the upcoming list item in themap portion. Or, the map navigation tool can dynamically zoom to showboth the current location icon (421) and waypoint icon (431) in the mapportion. The map portion is oriented in the direction the user istraveling, with the map rotating so that the direction to the endlocation is up.

Responsive to the tap gesture, the map navigation tool can also takeother actions. The map navigation tool can read out descriptive text forthe upcoming list item. The map navigation tool can also read out acurrent distance value between the current location of the computingdevice and location for the upcoming list item. For example, if theupcoming turn is at 132^(nd) Ave in 0.5 miles, the map navigation toolreads out: “<variable> In 0.5 miles </variable> <static> Turn right onto132nd Ave </static>.” The order that the static and variable parts areread out can be switched. The static part is provided by the server orotherwise made part of the list of directions. The variable part isupdated depending on current location.

If the user taps again, and the upcoming list item has not yet changed,the map navigation tool repeats the instruction for the upcoming listitem, this time using the updated distance. If the upcoming list itemhas changed (e.g., depending on the current location after successfulcompletion of an instruction), responsive to a subsequent tap gesture,the map navigation tool updates the upcoming list item to be a laterlist item and snaps to that list item in the display. The map navigationtool updates the map portion of the list view, if appropriate, using aplain horizontal animation or dynamic zoom. To prompt the user for thesubsequent tap gesture, the map navigation tool can provide an audio cuewhen the user successfully completes an instruction. The icon and textfor the next list item may also be visible after the upcoming list itemin the list control.

The list view (402) in FIG. 4 b shows a future list item (list item 6)at the top of the list control. The map navigation tool renders the listview (402) when the map navigation tool receives a flick up event.Responsive to a flick up gesture, the map navigation tool scrolls a fewitems forward in the list of directions, stopping at a list item thatsnaps to the top of the list control portion of the list view (402).This generally matches the behavior of other features of the userinterface of the computing device responsive to a flick up gesture. Themap navigation tool can also render the list view (402) responsive to apan gesture, panning up in the list of directions, but in this case themap navigation tool does not necessarily stop at a list item that snapsto the tops of the list control portion.

In the list view (402) in FIG. 4 b, the waypoint icon (433), main textdetail “1060 NE 93^(rd) Street,” direction icon (444), etc. for futurelist item 6 are displayed at the top of the list control portion. Thecurrent location icon (421) is not displayed in FIG. 4 b, but can bedisplayed in some cases. In the map portion of the list view (402), themap navigation tool updates the display to show the waypoint icon (433)for future list item 6. In the map portion, the orientation of the mapis north facing up, and the user is able to interact with the map usingpan, double tap, pinch, or spread gestures. In general, the mapnavigation tool does not use audio prompts for future list items.

The list view (403) in FIG. 4 c shows a previous list item (list item 1)in the list control. The map navigation tool renders the list view (403)when the map navigation tool receives a flick down event. Responsive toa flick down gesture, the map navigation tool scrolls a few items backin the list of directions, stopping at a list item (or start text) thatsnaps to the top of the list control portion of the list view (403).This generally matches the behavior of other features of the userinterface of the computing device responsive to a flick down gesture.The map navigation tool can also render the list view (403) responsiveto a pan gesture, panning down in the list of directions, but in thiscase the map navigation tool does not necessarily stop at a list item(or start text) that snaps to the tops of the list control portion.

In the list view (403) in FIG. 4 c, the waypoint icon (434), main textdetail “148^(th) Avenue NE,” direction icon (444), etc. for previouslist item 1 are displayed in the list control portion. The currentlocation icon (421) is not displayed in FIG. 4 c, but can be displayedin some cases. In the map portion of the list view (403), the mapnavigation tool updates the display to show the waypoint icon (434) forprevious list item 1. In the map portion, the orientation of the map isnorth facing up, and the user is able to interact with the map usingpan, double tap, pinch, or spread gestures. In general, the mapnavigation tool does not use audio prompts for previous list items.

From the list view (402) in FIG. 4 b or list view (403) in FIG. 4 c, ifthe map navigation tool receives a tap user input event, the mapnavigation tool transitions to a list view such as the list view (401)shown in FIG. 4 a, with emphasis on the upcoming list item. The mapnavigation tool updates the distance value between the current locationand location for the upcoming list item, if appropriate, and updates themap portion to display the current location icon and waypoint icon forthe upcoming list item, using dynamic zoom if appropriate.

Alternatively, for user-driven navigation, the map navigation toolreacts to different types of user input (e.g., tap, flick up gesture,flick down gesture, or pan gesture on a touchscreen) in other ways. Forexample, the map navigation tool reacts to tap input by outputting anindication of the current list item, whether the current list item isthe upcoming list item, a future list item, or a previous list item.

Changing Emphasis of List Items Depending on Current Location

According to a second set of innovations described herein, a mapnavigation tool dynamically adjusts presentation of graphics and textfor instructions depending on the current location of the computingdevice. In particular, the map navigation tool emphasizes the upcominginstruction relative to future instructions and previous instructions.This can help the user grasp complex route information more easily,especially if a user quickly scrolls through the list or glances at themap navigation UI. For example, the map navigation UI can use differentcolor schemes for upcoming, future and previous list items in a list ofdirections. This allows the user to more quickly understand where thecurrent location fits in the list of directions for the route. Asanother example, when an instruction has been successfully completed fora list item, the map navigation UI can use an audio and/or graphicalindication to prompt the user for input to move to the next list item.

FIG. 7 shows a generalized technique (700) for rendering list items withdifferent color schemes in a map navigation tool. A computing devicesuch as a mobile computing device can perform the technique (700).

To start, the map navigation tool identifies (710) an upcoming list itemamong multiple list items of a list of directions for a route. The mapnavigation tool then renders for display a view of at least part of thelist of directions. The way the graphics and/or text for a given listitem are rendered can depend on whether the list item is the upcominglist item, a future list item that follows the upcoming list item in theorder of the list of directions, or a previous list item that precedesthe upcoming list item in the order.

For a given list item, the map navigation tool checks (720) whether thegiven list item is the upcoming list item and, if so, renders (730) thegiven list item according to a first color scheme. Otherwise, the mapnavigation tool checks (740) whether the given list item is a futurelist item and, if so, renders (750) the future list item according to asecond color scheme different than the first color scheme. Otherwise,the given list item is a previous list item, and the map navigation toolrenders (760) the previous list item in a third color scheme differentthan the first and second color schemes. The tool then checks (790)whether to continue with another list item and, if so, continues torender the other list item in the view.

For example, if the given list item is the upcoming list item, accordingto the first color scheme, the upcoming list item is emphasized byrendering the waypoint icon, the direction icon and/or the location textfor the upcoming list item in an accent color (e.g., green, red). InFIG. 4 a, the waypoint icon (431), direction icon (441) and distancevalue (451) for upcoming list item 2 are shown in the accent color (darkgray in FIG. 4 a, due to limitations on reproduction of color drawings).Otherwise, if the given list item is a future list item, according tothe second color scheme, the future list item is shown by rendering thewaypoint icon, the direction icon and/or the location text for thefuture list item with a default color (e.g., black) different than theaccent color. In FIGS. 4 a and 4 b, the waypoint icons (432, 433),direction icons (442, 443), location text and distance values (452, 453)for future list items 3 and 6 are shown in black to mark these as futureinstructions. Otherwise, if the given list item is a previous list item,according to the third color scheme, the previous list item isde-emphasized by rendering the waypoint icon, the direction icon and/orthe location text for the previous list item with lower intensity (e.g.,as gray) than the default color and the accent color. In FIG. 4 c, thewaypoint icons (434, 435), direction icons (444) and location text forprevious list items 1 and 2 are shown in gray to mark these as pastinstructions. Alternatively, the map navigation tool implements thethree color schemes in a different way.

Similarly, the way distance values are rendered can depend on whetherthe list item is the upcoming list item, a future list item or aprevious list item. For example, if the given list item is the upcominglist item, a distance value between a current location of the computingdevice and the location for the upcoming list item is rendered in theview of at least part of the list of directions. If the given list itemis a future list item, a distance value between the location for thefuture list item and previous location is rendered in the view of atleast part of the list of directions. If the given list item is aprevious list item, no distance value is rendered for the given listitem.

FIG. 8 shows a generalized technique for rendering list views in a mapnavigation tool depending on status of the list items during navigation.A computing device such as a mobile computing device can perform thetechnique (800).

The map navigation tool identifies (810) an upcoming list item amongmultiple list items of a list of directions for a route. The mapnavigation tool then renders (820) for display a first view of at leastpart of the list of directions. In doing so, a first list item of themultiple list items is emphasized in the first view, as the upcominglist item, compared to a second list item that follows the first listitem in the order of the list of directions. For example, a graphicalicon and/or text for the first list item (upcoming) are rendered in anaccent color, while a graphical icon and/or text for the second listitem (future) are rendered with lower intensity or a different color.The first list item can be the initial list item in the list ofdirections or another list item at the top of the list control portionof the list view.

The map navigation tool checks (830) whether navigation has successfullycompleted for the upcoming list item. If so, responsive to successfulthe completion of navigation for the upcoming list item, the mapnavigation tool outputs (840) an indication of positive feedback (e.g.,beep, ding or other audible tone), changes the upcoming list item to bethe second list item (next in the list of directions), and renders (850)for display a second view of at least part of the list of directions. Inthe second view, the first list item is de-emphasized compared to thefirst view, and the second list item (as the upcoming list item) isemphasized compared to the first list item. For example, in the secondview, the graphical icon and/or text for the second list item (nowupcoming) are rendered in the accent color, while the graphical iconand/or text for the first list item (now previous) are rendered withlower intensity or a different color. Alternatively, the map navigationtool emphasizes and/or de-emphasizes list items in a different way.

When used in combination with user-driven navigation, the map navigationtool can render the first view responsive to a first user input event(e.g., for a tap gesture). After the successful completion of navigationfor the first list item and rendering of the second view, when the mapnavigation tool receives another user input event (e.g., for a tapgesture), responsive to the other user input event, the map navigationtool renders for display a third view of at least part of the list ofdirections. (When navigation for the first list item is successfullycompleted, the map navigation tool can output an indication of positivefeedback to prompt the user for subsequent user input.) In the thirdview, the second list item (as the upcoming list item) is furtheremphasized by aligning text for the second list item at the top of thelist control portion for a snap effect. Responsive to the user inputevents, the first view and third view can be accompanied by voice outputfor text description for the first list item and second list item,respectively.

FIGS. 9 a and 9 b show list views (901, 902) that change depending onstatus of the list items. In the list view (901) in FIG. 9 a, list item2 is the upcoming list item, and list item 3 is a future list item. Themap portion shows a current location icon (921) that is updated as thecurrent location approaches the location for list item 2, which is shownusing the waypoint icon (932) in the map portion. In the list controlportion, the waypoint icon (932), direction icon (942) and distancevalue (952) for list item 2 are rendered in an accent color, but themain text (972) is shown in the default color for better readability.The waypoint icon (933) and main text (973) for list item 3 (future listitem) are rendered in the default color.

Between FIGS. 9 a and 9 b, the user successfully completes thenavigation for list item 2. The map navigation tool can output anaudible tone to prompt the user to provide user input, so as to causethe map navigation tool to update the upcoming list item to be list item3. The map navigation tool can also change the list view to show thatlist item 2 is now “stale,” which provides a visual prompt to the userto provide user input. In the list view (902) in FIG. 9 b, the currentlocation icon (921) has changed positions in the map portion, list item2 is rendered as a previous list item, and list item 3 is rendered asthe upcoming list item. In the map portion, the waypoint icon (932) forlist item 2 is rendered in gray. In the list control portion, thewaypoint icon (932), direction icon (942) and text (972) for list item 2(now previous) are grayed out, and the waypoint icon (933) for list item3 (now upcoming) is rendered in the accent color.

Adjustable Destination Icon

On arriving at the end location of a route, a user often overshoots thedestination or spends some time wondering which side of a road is closerto the destination. According to a third set of innovations describedherein, a map navigation tool uses a destination icon that directs theuser towards the destination of a route when the user is close to and/orpast the destination. For example, the map navigation tool adds agraphic icon to the final list item which indicates the direction to thedestination of the route. This provides additional guidance to the userat the end of the route. In addition, if the user passes by thedestination, or the current location otherwise changes relative to thedestination, the map navigation tool can rotate, change or otherwisealter the destination icon to indicate the direction of the destination.Thus, a user can quickly check the map navigation UI to determine thedestination is behind, to the left, to the right, or in front of theuser.

FIG. 10 shows a generalized technique (1000) for rendering a graphicalicon that indicates direction toward a destination of a route with a mapnavigation tool. A computing device such as a mobile computing devicecan perform the technique (1000).

To start, the map navigation tool obtains (1010) a list of directionsfor a route. The map navigation tool renders (1020) one or more views ofthe list of directions. For example, for multiple list items of the listof the directions, the map navigation tool renders waypoint icons,direction icons and/or text for the respective list items in list views.

The map navigation tool checks (1030) whether the computing device isnear the destination or past the destination, which may be an endlocation apart from the list of directions or location for the finallist item as the end location. For example, the map navigation toolchecks the current location of the computing device relative to theroute mapping and the end location. If the current location is outside athreshold distance from the destination, and the current location hasnot passed the destination, the map navigation tool continues rendering(1020) views of the list of directions. The threshold distance dependson implementation (e.g., 100 feet, 50 feet). If the map navigation tooldetermines that the current location is within the threshold distancefrom the end location, or determines the destination has been passed,the map navigation tool renders (1040) for display a destination iconthat indicates direction towards an end location of the route.Alternatively, the map navigation tool only checks (1030) whether thecurrent location is past the destination (and does not considerthreshold distance from the destination), or the map navigation toolchecks some other proximity condition. The rendering of the destinationicon can be automatic (e.g., when the destination is passed, or when thecurrent location is close enough to the destination), or the renderingof the destination icon can be user-driven (e.g., responsive to userinput such as a tap gesture when proximity condition(s) are satisfied).

The map navigation tool checks (1050) whether map navigation hascompleted (e.g., by the user closing the map navigation UI). If not, themap navigation tool selectively alters (1060) the destination icondepending on current location and end location, then renders (1040) thedestination icon again. For example, the map navigation tool alters thedestination icon by rotating the icon towards the end location, byswitching between multiple icons (e.g., representing left, right, aheadand behind directions, respectively) or in some other way. The mapnavigation tool can alter the destination icon in one or more iterationsafter the destination icon is initially rendered. The selectivealteration of the destination icon depending on the current location andend location can be automatic (e.g., every 1 second as the currentlocation is updated), or the selective alteration of the destinationicon can be user-driven (e.g., responsive to user input such as a tapgesture to update the destination icon).

FIGS. 11 a-11 d show example destination icons in a list view renderedusing a map navigation tool. The destination icon can be a simple arrowicon that points to the destination. In FIG. 11 a, the destination icon(1186) is a simple arrow that indicates the direction toward the endlocation (for list item 6). In this case, the destination icon (1186)resembles a direction icon, in that it indicates the course of travelalong the final part of the route. The arrow icon rotates towards thedestination, however, depending on the current location. In FIG. 11 b,the destination icon (1187) has been rotated, considering the change incurrent location of the computing device relative to the end location.This also alerts the user that the destination has been passed.

Alternatively, the destination icon can be another shape or pattern. InFIG. 11 c, for example, the destination icon (1188) has a star and roadpattern. The position of the star relative to the road indicates theside of the road on which the destination is located. In FIG. 11 d, thedestination icon (1189) is a star and arrow pattern, which indicates theuser should turn around and also indicates the side of the road on whichthe destination is located. Alternatively, the map navigation tool usesa simple star icon to mark the destination when the current location issufficiently close (e.g., within a threshold distance) of the endlocation or past the end location, and that simple star icon does notrotate, or the map navigation tool uses another shape or pattern for thedestination icon.

Alternatives and Variations

Although the operations of some of the disclosed methods are describedin a particular, sequential order for convenient presentation, it shouldbe understood that this manner of description encompasses rearrangement,unless a particular ordering is required by specific language set forthbelow. For example, operations described sequentially may in some casesbe rearranged or performed concurrently. In FIGS. 6 b and 7, forexample, the order in which types of user input events are checked,types of list items are checked, which list items are checked, etc. canbe rearranged. Moreover, for the sake of simplicity, the attachedfigures may not show the various ways in which the disclosed methods canbe used in conjunction with other methods.

Any of the disclosed methods can be implemented as computer-executableinstructions or a computer program product stored on one or morecomputer-readable storage media (e.g., non-transitory computer-readablemedia, such as one or more optical media discs such as DVD or CD,volatile memory components (such as DRAM or SRAM), or nonvolatile memorycomponents (such as hard drives)) and executed on a computer (e.g., anycommercially available computer, including smart phones or other mobiledevices that include computing hardware). Any of the computer-executableinstructions for implementing the disclosed techniques as well as anydata created and used during implementation of the disclosed embodimentscan be stored on one or more computer-readable media (e.g.,non-transitory computer-readable media). The computer-executableinstructions can be part of, for example, a dedicated softwareapplication or a software application that is accessed or downloaded viaa web browser or other software application (such as a remote computingapplication). Such software can be executed, for example, on a singlelocal computer (e.g., any suitable commercially available computer) orin a network environment (e.g., via the Internet, a wide-area network, alocal-area network, a client-server network (such as a cloud computingnetwork), or other such network) using one or more network computers.

For clarity, only certain selected aspects of the software-basedimplementations are described. Other details that are well known in theart are omitted. For example, it should be understood that the disclosedtechnology is not limited to any specific computer language or program.For instance, the disclosed technology can be implemented by softwarewritten in C++, Java, Perl, JavaScript, Adobe Flash, or any othersuitable programming language. Likewise, the disclosed technology is notlimited to any particular computer or type of hardware. Certain detailsof suitable computers and hardware are well known and need not be setforth in detail in this disclosure.

The disclosed methods, apparatus, and systems should not be construed aslimiting in any way. Instead, the present disclosure is directed towardall novel and non-obvious features and aspects of the various disclosedembodiments, alone and in various combinations and sub-combinations withone another. The disclosed methods, apparatus, and systems are notlimited to any specific aspect or feature or combination thereof, nor dothe disclosed embodiments require that any one or more specificadvantages be present or problems be solved. In view of the manypossible embodiments to which the principles of the disclosed inventionmay be applied, it should be recognized that the illustrated embodimentsare only preferred examples of the invention and should not be taken aslimiting the scope of the invention. Rather, the scope of the inventionis defined by the following claims. We therefore claim as our inventionall that comes within the scope and spirit of these claims.

1. In a computing device that implements a map navigation tool, a methodcomprising: identifying an upcoming list item among multiple list itemsof a list of directions for a route, the list of directions includingthe multiple list items in an order; receiving a user input event; andresponsive to the user input event, outputting an indication of theupcoming list item.
 2. The method of claim 1 further comprising, foreach of one or more subsequent user input events: receiving thesubsequent user input event; and responsive to the subsequent user inputevent, outputting the indication of the upcoming list item, therebyrepeating the output of the indication of the upcoming list item.
 3. Themethod of claim 1 further comprising: based at least in part on a changeto current location of the computing device, changing the upcoming listitem; receiving a subsequent user input event; and responsive to thesubsequent user input event, outputting an indication of the changedupcoming list item, thereby advancing in the order through the multiplelist items.
 4. The method of claim 1 further comprising: based at leastin part on a change to current location of the computing device,changing the upcoming list item; and delaying outputting an indicationof the changed upcoming list item until receipt of a subsequent userinput event.
 5. The method of claim 1 wherein the user input eventrepresents a tap on a touchscreen of the computing device, voice inputto a microphone of the computing device, or button or keystroke input tothe computing device.
 6. The method of claim 1 wherein the outputtingcomprises: rendering for display a view of at least part of the list ofdirections, wherein the upcoming list item is emphasized in the viewcompared to other list items of the multiple list items.
 7. The methodof claim 6 wherein the upcoming list item is emphasized in the view byrendering a graphical icon and/or text for the upcoming list item in anaccent color different than a default color used to render other listitems of the multiple list items.
 8. The method of claim 6 wherein theupcoming list item is emphasized in the view by aligning text for theupcoming list item at the top of a list control portion of the view. 9.The method of claim 1 wherein the outputting comprises: rendering foraudio playback voice output for text description of the upcoming listitem.
 10. The method of claim 1 wherein the outputting comprisesrendering for display a first view of at least part of the list ofdirections, the method further comprising: receiving a subsequent userinput event; and responsive to the subsequent user input event,rendering for display a second view of at least part of the list ofdirections that is scrolled relative to the first view.
 11. The methodof claim 10 wherein the subsequent user input event represents a flickgesture or pan gesture on a touchscreen of the computing device.
 12. Themethod of claim 10 further comprising identifying a future list itemamong the multiple list items, the future list item following theupcoming list item in the order, wherein the future list item is shownin the second view by rendering a graphical icon and/or text for thefuture list item with a default color different than an accent colorused to render a graphical icon and/or text for the upcoming list item.13. The method of claim 10 further comprising identifying a previouslist item among the multiple list items, the previous list itempreceding the upcoming list item in the order, wherein the previous listitem is de-emphasized in the second view by rendering a graphical iconand/or text for the previous list item with lower intensity than thedefault color and the accent color.
 14. The method of claim 1 furthercomprising: checking whether a current list item is the upcoming listitem; if the current list item is the upcoming list item, settingorientation of a view of a map so that heading toward an end location ofthe route is upward in the view of the map; and otherwise, if thecurrent list item is not the upcoming list item, setting the orientationof the view of the map so that north is upward in the view of the map.15. The method of claim 1 wherein the identification of the upcominglist item is based at least in part on current location of the computingdevice, the method further comprising: upon successful completion ofnavigation for the upcoming list item, outputting an indication ofpositive feedback; and upon deviation from the route, outputting anindication of negative feedback.
 16. A computing device that includes aprocessor and memory, the computing device being adapted to perform amethod comprising: identifying an upcoming list item among multiple listitems of a list of directions for a route, the list of directionsincluding the multiple list items in an order; receiving a user inputevent, wherein the user input event represents a tap on a touchscreen ofthe computing device, voice input to a microphone of the computingdevice, or button or keystroke input to the computing device; andresponsive to the user input event, outputting an indication of theupcoming list item, wherein the outputting comprises: rendering fordisplay a view of at least part of the list of directions; and renderingfor audio playback voice output for text description of the upcominglist item.
 17. The computing device of claim 16 wherein the methodfurther comprises, for each of one or more subsequent user input events:receiving the subsequent user input event; and responsive to thesubsequent user input event, outputting the indication of the upcominglist item, thereby repeating the output of the indication of theupcoming list item.
 18. The computing device of claim 16 wherein themethod further comprises: based at least in part on a change to currentlocation of the computing device, changing the upcoming list item;receiving a subsequent user input event; and responsive to thesubsequent user input event, outputting an indication of the changedupcoming list item, thereby advancing in the order through the multiplelist items.
 19. The computing device of claim 16 wherein the methodfurther comprises: based at least in part on a change to currentlocation of the computing device, changing the upcoming list item; anddelaying outputting an indication of the changed upcoming list itemuntil receipt of a subsequent user input event.
 20. One or morecomputer-readable storage media storing computer-executable instructionsfor causing a computing device to perform a method comprising:identifying an upcoming list item among multiple list items of a list ofdirections for a route, the list of directions including the multiplelist items in an order; receiving a user input event, wherein the userinput event represents a tap on a touchscreen of the computing device,voice input to a microphone of the computing device, or button orkeystroke input to the computing device; responsive to the user inputevent, outputting an indication of the upcoming list item, wherein theoutputting comprises rendering for display a first view of at least partof the list of directions; receiving a subsequent user input event,wherein the subsequent user input event represents a flick gesture orpan gesture on a touchscreen of the computing device; and responsive tothe subsequent user input event, rendering for display a second view ofat least part of the list of directions that is scrolled relative to thefirst view.